chore(release): 0.5.1 - #47
Merged
Merged
Conversation
A patch release: nothing here breaks. Credentials registered under 0.5.0 keep working, the derived did:key is unchanged, and no peer has to move in step with another. The headline is the WebAuthn user handle (#45/#46). It was the UTF-8 of whatever the caller passed as `userId`, so an authenticator — which keeps one credential per (rp.id, user.id) and replaces it when both match — silently destroyed the first passkey when a second person on the same device used the same name, and the DID with it. It is 64 random bytes now; the typed value stays as `user.name`, the label the picker shows. Consumers get one behavioural difference worth naming in their own UI: re-registering under a name used before adds a passkey instead of replacing one. That is the point, but it means a picker can now show several, so the labels want to be distinguishable. Also in this release: the largeBlob keystore actually persists its secret key (#43), the credential carries the authenticator's own answer on extension support rather than the browser's guess (#43), and extension detection asks `getClientCapabilities()` instead of probing a prototype that never had the properties (#9/#42) — that last one had the encrypted-keystore demo disabling its headline feature in every browser ever shipped. 67 node tests pass against the bumped version. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
A patch release: nothing here breaks. Credentials registered under 0.5.0 keep working, the derived
did:keyis unchanged, and no peer has to move in step with another — unlike 0.4.0 and 0.5.0, both of which did.What is in it
userId, so an authenticator — which keeps one credential per(rp.id, user.id)and replaces it when both match — silently destroyed the first passkey when a second person on the same device used the same name, taking the DID and everything signed under it. 64 random bytes now; the typed value stays asuser.name, the label the picker shows.secretKey: sk, // Will be moved to largeBloband nothing ever moved it, so choosing largeBlob produced a keystore that worked for exactly one session.getClientCapabilities()(WebAuthn demo fails: hmac-secret output missing + largeBlob unavailable when WebAuthnInterceptor popup closes #9, fix: detect WebAuthn extensions by asking the browser #42) instead of probing a prototype that never carried the properties. The old test returnedfalsein every browser ever shipped, which had the encrypted-keystore demo disabling its own headline feature everywhere.For consumers
One behavioural difference worth naming in your own UI: re-registering under a name used before now adds a passkey instead of replacing one. That is the point — a replaced passkey is data loss, a second entry is a choice — but a picker can now show several, so labels want to be distinguishable.
Three consumer PRs are already open as drafts waiting on this release: simple-todo#198, simple-todo#199, yogasuci#85.
Version choice
0.5.1, not0.6.0. In this repo's 0.x history the minor slot has been the breaking one — 0.4.0 and 0.5.0 both changed bytes that peers had to agree on, while 0.4.1 and 0.4.2 carried features and fixes as patches. Nothing in this release forces a coordinated upgrade.Verification
67 node tests pass against the bumped version; prettier clean.
After merge, publishing is a tag push:
git tag v0.5.1 && git push origin v0.5.1runs the full suite inrelease.ymland publishes via OIDC.